import { unref, computed, h, nextTick, watchEffect } from 'vue';
import TableFooter from '../components/TableFooter.vue';
import { useEventListener } from '/@/hooks/event/useEventListener';
export function useTableFooter(propsRef, scrollRef, tableElRef, getDataSourceRef) {
    const getIsEmptyData = computed(() => {
        return (unref(getDataSourceRef) || []).length === 0;
    });
    const getFooterProps = computed(() => {
        const { summaryFunc, showSummary, summaryData } = unref(propsRef);
        return showSummary && !unref(getIsEmptyData) ? () => h(TableFooter, { summaryFunc, summaryData, scroll: unref(scrollRef) }) : undefined;
    });
    watchEffect(() => {
        handleSummary();
    });
    function handleSummary() {
        const { showSummary } = unref(propsRef);
        if (!showSummary || unref(getIsEmptyData))
            return;
        nextTick(() => {
            const tableEl = unref(tableElRef);
            if (!tableEl)
                return;
            const bodyDom = tableEl.$el.querySelector('.ant-table-content');
            useEventListener({
                el: bodyDom,
                name: 'scroll',
                listener: () => {
                    const footerBodyDom = tableEl.$el.querySelector('.ant-table-footer .ant-table-content');
                    if (!footerBodyDom || !bodyDom)
                        return;
                    footerBodyDom.scrollLeft = bodyDom.scrollLeft;
                },
                wait: 0,
                options: true,
            });
        });
    }
    return { getFooterProps };
}
